


									/* Weather Settings */
									

var locale = "FRCE0872" 

var isCelsius = true

var useRealFeel = false

var enableWallpaper = true;

var enableLockScreen = true;

var stylesheetWall = 'mini'

var stylesheetLock = 'mini'

var stylesheet = 'mini'

var iconSetWall = 'Droid2'

var iconExtWall = ".png"

var iconSetLock = 'Droid2'

var iconExtLock = '.png'


var source = 'yahooWeather'


var updateInterval = 10


									/* End Weather Settings */			













									



var postal;

var demoMode = false;

var enabled;


var descriptions =

[

"Tornade",

"Orage Tropical",

"Ouragan",

"Orages",

"Orages",

"Pluie et Neige",

"Pluie et Verglas",

"Neige et Verglas",

"Brouillard Verglassant",

"Brouillard",

"Pluie Verglassante",

"Averses",

"Averses",

"Bourrasques de neige",

"Petites chutes de neige",

"Chutes de neige - Vent",

"Neige",

"grele",

"Verglas",

"Non communique",

"brumeux",

"Brume",

"Non communique",

"Non communique",

"Vent",

"Froid",

"Nuageux",

"Pass. nuageux",

"Pass. nuageux",

"Pass. nuageux",

"Pass. nuageux",

"Ciel Clair",

"Ensoleille",

"Clair",

"Beau Temps",

"Pluie et Grele melangees",

"Tres Chaud",

"Pass. nuageux et orages",

"Orage et eclaircies",

"Orage et eclaircies",

"Pluies et eclaircies",

"Chute de neige importante",

"Petite chutes de neige",

"Chute de neige importante",

"Partiellement couvert",

"Tonnerre",

"Chutes de neige",

"Tonnerre et eclaircies",

"Pas d'info",

]

/*

[

"Tornado",

"Tropische storm",

"Orkaan!",

"Zware onweersbuien",

"Onweersbuien",

"Regen/sneeuw",

"Regen/natte sneeuw",

"(Natte)sneeuw",

"IJzel!",

"Motregen",

"Aanvriezende regen",

"Buien",

"Buien",

"Sneeuw vlagen",

"Lichte sneeuw",

"Sneeuw vlagen",

"Sneeuw",

"Hagel",

"Natte sneeuw",

"Nevelig",

"Mist!",

"Nevelig",

"Nevelig",

"Guur weer",

"Winderig",

"Koud",

"Bewolkt",

"Overwegend bewolkt",

"Overwegend bewolkt",

"Gedeeltelijk bewolkt",

"Gedeeltelijk bewolkt",

"Heldere nacht",

"Zonnig",

"Heldere nacht",

"Helder weer",

"Regen/hagel",

"Heet",

"Onweersbuien",

"Onweersbuien",

"Onweersbuien",

"Buien",

"Zware sneeuwval",

"Sneeuwbuien",

"Gedeeltelijk bewolkt",

"Onweersbuien",

"Sneeuwbuien",

"Onweersbuien",

"Niet beschikbaar",

]

*/

if (location.href.indexOf("LockBackground")  == -1){



	stylesheet = stylesheetWall;



	iconSet = iconSetWall;



	iconExt = iconExtWall;



	enabled = enableWallpaper;



}else{



	stylesheet = stylesheetLock;



	iconSet = iconSetLock;



	iconExt = iconExtLock;



	enabled = enableLockScreen;



}







if(enabled == true){



if(iconSet == null || iconSet == 'null' || iconSet == ""){



	var iconSet = stylesheet;



}







var headID = document.getElementsByTagName("head")[0];	       



var styleNode = document.createElement('link');



styleNode.type = 'text/css';



styleNode.rel = 'stylesheet';



styleNode.href = 'Stylesheets/'+stylesheet+'.css';



headID.appendChild(styleNode);







var scriptNode = document.createElement('script');



scriptNode.type = 'text/javascript';



scriptNode.src = 'Sources/'+source+'.js';



headID.appendChild(scriptNode);



}







function onLoad(){



	if (enabled == true){ 



	if (demoMode == true){



		document.getElementById("weatherIcon").src="Icon Sets/"+iconSet+"/"+"cloudy1"+iconExt;



		document.getElementById("city").innerText="Somewhere";



		document.getElementById("desc").innerText="Partly Cloudy";



		document.getElementById("temp").innerText="100º";



		



	}else{ 



	document.getElementById("weatherIcon").src="Icon Sets/"+iconSet+"/"+"dunno"+iconExt;



	validateWeatherLocation(escape(locale).replace(/^%u/g, "%"), setPostal)



	}



	}else{



		document.getElementsByTagName("body")[0].innerText='';



	}



}







function convertTemp(num)



{



	if (isCelsius == true)



		return Math.round ((num - 32) * 5 / 9);



	else



		return num;



}







function setPostal(obj){



	



	if (obj.error == false){



		if(obj.cities.length > 0){



			postal = escape(obj.cities[0].zip).replace(/^%u/g, "%")



			document.getElementById("WeatherContainer").className = "";	



			weatherRefresherTemp();



		}else{



			document.getElementById("city").innerText="Not Found";



			document.getElementById("WeatherContainer").className = "errorLocaleNotFound";	



		}



	}else{



		document.getElementById("city").innerText=obj.errorString;



		document.getElementById("WeatherContainer").className = "errorLocaleValidate";	



		setTimeout('validateWeatherLocation(escape(locale).replace(/^%u/g, "%"), setPostal)', Math.round(1000*60*5));



	}



}







function dealWithWeather(obj){







	if (obj.error == false){



		document.getElementById("city").innerText=obj.city;


		document.getElementById("desc").innerText=descriptions[obj.icon].toLowerCase();
		


		



		if(useRealFeel == true){



			tempValue = convertTemp(obj.realFeel);



		}else{



			tempValue = convertTemp(obj.temp)



		}



		document.getElementById("temp").innerHTML=tempValue+ "&#176;";



		document.getElementById("weatherIcon").src="Icon Sets/"+iconSet+"/"+MiniIcons[obj.icon]+iconExt;



		document.getElementById("WeatherContainer").className = "";	


		



	}else{



		//Could be down to any number of things, which is unhelpful...



		document.getElementById("WeatherContainer").className = "errorWeatherDataFetch";	



	}

}



function weatherRefresherTemp(){



	fetchWeatherData(dealWithWeather,postal);



	setTimeout(weatherRefresherTemp, 60*1000*updateInterval);

}






var MiniIcons =



[

	

	"tstorm3",		//0	tornado

	

	"tstorm3",		//1	tropical storm

	

	"tstorm3",		//2	hurricane

	

	"tstorm3",		//3	severe thunderstorms

	

	"tstorm2",		//4	thunderstorms

	

	"sleet",		//5	mixed rain and snow

	

	"sleet",		//6	mixed rain and sleet

	

	"sleet",		//7	mixed snow and sleet

	

	"sleet",		//8	freezing drizzle

	

	"light_rain",		//9	drizzle

	

	"sleet",		//10	freezing rain

	

	"shower2",		//11	showers

	

	"shower2",		//12	showers

	

	"snow1",		//13	snow flurries

	

	"snow2",		//14	light snow showers

	

	"snow4",		//15	blowing snow

	

	"snow4",		//16	snow

	

	"hail", 		//17	hail

	

	"sleet",		//18	sleet

	

	"mist", 		//19	dust

	

	"fog",			//20	foggy

	

	"fog",			//21	haze

	

	"fog",			//22	smoky

	

	"cloudy1",		//23	blustery

	

	"wind", 		//24	windy

	

	"overcast",		//25	cold

	

	"cloudy4",		//26	cloudy

	

	"cloudy3_night",	//27	mostly cloudy (night)

	

	"cloudy3",		//28	mostly cloudy (day)

	

	"cloudy2_night",	//29	partly cloudy (night)

	

	"cloudy2",		//30	partly cloudy (day)

	

	"sunny_night",		//31	clear (night)

	

	"sunny",		//32	sunny

	

	"fair_night",	       //33    fair (night)

	

	"fair", 	 //34	 fair (day)

	

	"hail", 		//35	mixed rain and hail

	

	"sunny",		//36	hot

	

	"tstorm1",		//37	isolated thunderstorms

	

	"tstorm2",		//38	scattered thunderstorms

	

	"tstorm2",		//39	scattered thunderstorms



	"tstorm2",		//40	scattered showers



	"snow5",		//41	heavy snow

	

	"snow3",		//42	scattered snow showers

	

	"snow5",		//43	heavy snow

	

	"cloudy1",		//44	partly cloudy

	

	"storm1",		//45	thundershowers

	

	"snow2",		//46	snow showers

	

	"tstorm1",		//47	isolated thundershowers

	

	"dunno",		//3200	not available



]




function constructError (string)



{



	return {error:true, errorString:string};



}


function findChild (element, nodeName)



{
	var child;

	for (child = element.firstChild; child != null; child = child.nextSibling)



	{



		if (child.nodeName == nodeName)



			return child;



	}



	



	return null;



}



function fetchWeatherData (callback, zip)



{



	url="http://weather.yahooapis.com/forecastrss?u=f&p=" //u=Farenheit, because accuWeather sucks



	



	var xml_request = new XMLHttpRequest();



	xml_request.onload = function(e) {xml_loaded(e, xml_request, callback);}



	xml_request.overrideMimeType("text/xml");



	xml_request.open("GET", url+zip);



	xml_request.setRequestHeader("Cache-Control", "no-cache");



	xml_request.send(null); 


	return xml_request;



}



function xml_loaded (event, request, callback)



{



	if (request.responseXML)



	{



		var obj = {error:false, errorString:null};



		var effectiveRoot = findChild(findChild(request.responseXML, "rss"), "channel");



		obj.city = findChild(effectiveRoot, "yweather:location").getAttribute("city");



		obj.realFeel = findChild(effectiveRoot, "yweather:wind").getAttribute("chill");//Only accounts for windChill



		



		conditionTag = findChild(findChild(effectiveRoot, "item"), "yweather:condition");



		obj.temp = conditionTag.getAttribute("temp");



		obj.icon = conditionTag.getAttribute("code");



		obj.description = conditionTag.getAttribute("text"); 



		callback (obj); 



	}else{



		callback ({error:true, errorString:"XML request failed. no responseXML"});



	}



}


function validateWeatherLocation (location, callback)



{



	var obj = {error:false, errorString:null, cities: new Array};



	obj.cities[0] = {zip: location}; //Not very clever, are we?



	callback (obj);



}
